/**
 * EN language
 */
const element = {
  currentIteration: 'Current iteration element',
  modelFilter: 'Model Filter',
  nameFilter: 'Selected Element',
  namePlace: 'Please input element name to search',
  iterationList: 'Iterate Element List',
  whenList: 'When the parent step exists',
  thenList: ', You can select this element as',
  last: ' carry on operation.',
  paramTip:
    'If temporary params/global params are needed, you can put double curly braces with params.',
  name: 'Name',
  nameMsg: 'Please input element name',
  type: 'Type',
  typePlace: 'Please choose element type',
  deviceType: 'Common Type of mobile',
  specType: 'Special Type',
  point: 'coordinate(Support relative coordinates)',
  poco: 'POCO(Only game element are supported)',
  image: 'image',
  webViewType: 'Common Type of WebView',
  value: 'Value',
  valuePlace: 'Please input element value',
  model: 'Model',
  modelPlace: 'Please choose model',
};
const suite = {
  name: 'Name',
  namePlace: 'Please input suite name',
  perf: 'Perf Collect',
  interval: 'Collect Interval',
  devicePlace:
    'Please select the devices. You can enter the model, remarks, name and serial number to filter',
  selectedCase: 'Selected Cases',
};
const testcase = {
  info: 'Case Info',
  namePlace: 'Input name to search',
  model: 'Model',
  version: 'Version',
  designer: 'Designer',
  editTime: 'Last Modified',
  deleteTip:
    'Are you sure to delete this case? The steps under the case will be moved out of the case',
  name: 'Name',
  nameMsg: 'Please input case name',
  project: 'Project',
  projectPlace: 'Please select project',
  platform: 'Platform',
  platformPlace: 'Please select platform',
  modelLabel: 'Model',
  modelPlace: 'Please select model',
  versionLabel: 'Version',
  versionPlace: 'Please select version',
  des: 'Description',
  desPlace: 'Please input case description',
  empty: 'No testcases',
  add: 'Add right now',
  list: 'Test Case List',
};
const pubSteps = {
  pList: 'Public Steps List',
  alertOne: 'This step already exists in the following public steps!',
  alertTwo:
    'After selecting 【Remove Only This Case】, the steps are deleted from this case, and the following public steps are not affected.',
  alertThree:
    'After selecting 【Delete Completely】, this step is deleted from this case and from the following public steps.',
  resetCaseId: 'Remove Only This Case',
  deleteReal: 'Delete Completely',
  auto: 'Auto Saving...',
  selectPass: 'Selection successful! Added to the selected step',
  removePass: 'Remove successful!',
  stepInfo: 'Step Info',
  name: 'Name',
  nameMsg: 'Public step name cannot be empty',
  namePlace: 'Please input pubic step name',
  platform: 'Platform',
  platformPlace: 'Please select platform',
  stepTip: 'You can edit the selected steps after saving',
  selected: 'Selected Steps',
  list: 'Step List',
  listTip: 'Add or edit steps from here and add to the selected steps',
  addStep: 'Add steps',
  searchPlace: 'Search by element name',
  search: 'Search ',
  case: 'CaseId',
  deleteCaseTip: 'Are you sure to delete this step completely?',
  goToCase: 'Go to case details',
  goToCaseTip:
    'This step exists in the case. You need to go to the use case details before deleting!',
};
const steps = {
  step: 'Step',
  cases: 'CaseId: ',
  empty: 'Empty Step',
  remove: 'Are you sure to delete this step?',
  run: 'Run Steps',
  forceStep: 'Force Stop',
  clear: 'Clear',
  status: 'Stat',
  time: 'Time',
  detail: 'Detail',
  script: 'Click to expand/collapse the script',
  running: 'Running',
  done: 'Run completed',
  loading: 'Loading',
  loadDone: 'Load completed',
  loadMore: 'Load more',
  copyStepTips:
    'Are you sure you want to replicate this step? Click on the surrounding space to cancel',
  copyToNextLine: 'copy to current line',
  copyToLastLine: 'copy to last line',
  addStepTips:
    'Select the location to add the step and click on the surrounding space to cancel.',
  addToNextLine: 'add to next line',
  addToBeforeLine: 'add to previous line',
};
const code = {
  placeholder: 'Please choose language',
  settings: 'Settings',
  temp: 'Import',
  table: {
    name: 'Input name to search',
    lang: 'Language',
    type: 'Import Type',
    add: 'add',
    replace: 'replace',
  },
  tip: 'Remember to save after editing',
};
const token = {
  day: 'Expiration',
  result: 'Result',
  click: '(Click to copy)',
  copy: 'Click Confirm to copy here',
};
const project = {
  logo: 'Project Logo',
  name: 'Name',
  nameMessage: 'Project name cannot be empty',
  namePlace: 'Please input project name',
  des: 'Description',
  desPlace: 'Please input project description',
  delete: 'Delete Project',
  deleteConfirmMsg: 'Are you sure to delete this project?',
  deleteConfirmMsgDes:
    'All information contained in the project will be deleted!',
  alertConfig: 'Alert Config',
  ui: {
    globalRobot: 'Enable global robot in this project',
    testsuiteDefaultAlertRobotIds:
      'Default send testsuite notice to all available robots',
  },
};
const perf = {
  select:
    '(Optional) Click here to select the listening application process performance',
  start: 'Start',
  stop: 'Stop',
  clear: 'Clear',
  singleCpu: 'CPU Single',
  totalCpu: 'CPU Total',
  memUsage: 'Memory Usage',
  network: 'Network',
  procCpu: 'CPU Usage',
  emptyData: 'No Data',
  byteData: 'Data',
};
const script = {
  name: 'Name',
  namePlace: 'Please input template name',
  info: 'Template information',
  add: 'New template',
  typeSearch: 'Input name to search',
  lang: 'Language',
  deleteMsg: 'Are you sure to delete the script template?',
};
const robot = {
  robotType: 'Robot Type',
  robotTypePlaceholder: 'Please select the robot type',
  robotToken: 'WebHook',
  robotTokenPlaceholder: 'Please input the WebHook of the group robot',
  robotSecret: 'Secret',
  robotSecretPlaceholder: '(Optional) Please input the key of the group robot',
  id: 'ID',
  projectId: 'Project',
  projectIdPlaceholder:
    '(Optional) keep it blank to make this robot global available',
  name: 'Name',
  robotNamePlaceholder: 'Please input a short name for this robot',
  scene: 'Scene',
  template: 'Template',
  muteRule: 'Mute When',
  sceneList: {
    testsuite: 'Testsuite Report',
    summary: 'Project Daily Summary',
    agent: 'Device Agent Event',
  },
  scenePlaceholder: 'Please select notice scene',
  consts: {
    nomute: 'Never',
    mute: 'Allways mute',
    muteWeekend: 'Mute at weekend',
    muteNonworktime: 'Mute at night',
    muteNoerr: 'Mute when all test cases passed',
    muteWeekendNoerr: 'Mute when all test cases passed at weekend',
    muteNonworktimeNoerr: 'Mute when all test cases passed at night',
    defaultTemplate: 'Default template',
    customTemplate: 'Custom template',
    customMute: 'Custom rule',
    anyProject: 'Global',
  },
  ui: {
    add: 'Add',
    addOrEdit: 'Add/Edit',
    commonMuteRules: 'Common mute rules',
    custom: 'Custom',
    defaultTemplate: 'Reset',
    botPlaceholder:
      'please select robots, keep it blank to prevent send notice',
    delMessage: 'Are you sure to delete the robot?',
    globalRobot: 'Global Robot',
  },
};
const agent = {
  hub: {
    config: 'Hub Config',
    info: 'Devices details',
    voltage: 'Voltage',
    temperature: 'Temperature',
    action: 'Action',
    switch: 'Switch',
    status: 'USB has not been connected',
    relate: 'Relate',
    poweron: 'Power On',
    poweroff: 'Power Off',
    allpoweron: 'All Power On',
    allpoweroff: 'All Power Off',
  },
  newAgent: 'New Agent',
  clickToCopy: 'Copy Key',
  status: {
    name: 'Status',
    online: 'ONLINE',
    offline: 'OFFLINE',
    s2ae: 'S2AE',
  },
  system: 'System',
  version: 'Version',
  operation: 'Operation',
  shutdown: 'Shutdown',
  edit: {
    name: 'Name',
    highTemp: 'High temperature value',
    highTempTime: 'High temperature timeout',
    rule: 'Agent name cannot be empty',
    namePlaceholder: 'Please input the Agent name',
  },
  ui: {
    alertRobotIds: 'Robot',
    defaultAlertRobotIds: 'Send agent notice to all available robots',
  },
};
const devices = {
  title: 'Sonic Cloud',
  list: 'Device List',
  form: {
    model: 'Model',
    manufacturer: 'MFR',
    system: 'System',
    battery: {
      level: 'Level',
      temperature: 'Temp',
      voltage: 'Voltage',
    },
    agent: 'Agent',
  },
  detail: {
    image: 'Image',
    uploadImg: ' Click to Upload',
    nickName: 'NickName',
    nickPlaceholder: 'Input device nickname',
    name: 'Name',
    model: 'Model',
    udId: 'UDID',
    size: 'Screen Size',
    cpu: 'CPU',
    pwd: 'Password',
    pwdPlaceholder: 'Default Sonic123456',
    operation: 'Operation',
    reboot: 'Reboot',
    rebootTips: 'Are you sure to reboot the device?',
    deleteTips: 'Are you sure to delete the device?',
  },
  useRightNow: 'Use Now',
  moreDetail: 'More',
  deviceCenter: 'Device Center',
  agentCenter: 'Agent Center',
  status: {
    ONLINE: 'ONLINE',
    DEBUGGING: 'DEBUGGING',
    TESTING: 'TESTING',
    DISCONNECTED: 'DISCONNECTED',
    OFFLINE: 'OFFLINE',
    UNAUTHORIZED: 'UNAUTHORIZED',
    ERROR: 'ERROR',
  },
  filter: {
    all: 'All',
    platform: {
      ANDROID: 'Android',
      IOS: 'iOS',
      HARMONY: 'Harmony',
    },
    manufacturer: 'Manufacturer',
    cpu: 'CPU',
    size: 'Screen Size',
    agent: 'Agent',
    status: 'Status',
    placeholder: 'Please enter the model, name, or serialNumber',
    button: 'Filter',
  },
  refresh: 'Auto refresh',
  avgTem: 'Current average battery temperature: ',
  hint: 'Set Prompt',
  adTemperature: {
    temperature: 'When the device temperature is ≥',
    height: 'High temperature value',
    onlyAd: 'the robot will be notified of the alarm.',
    then: 'then',
    timeout: 'High temperature timeout',
    continuedTime: 'Temperature continues for ≥',
    onlyAdNotice: 'the robot will be notified and ',
    shutdown: 'shutdown',
  },
};
// 布局相关
const layout = {
  // header
  theme: 'Current theme: ',
  languages: 'Languages',
  deviceCenter: 'Device Center',
  myInfo: 'My Information',
  changePassword: 'Change Password',
  signOut: 'Sign Out',
  aboutSonic: 'About Sonic',
  backHome: 'Home',
  welcomeSpeech:
    'Welcome to Sonic cloud real machine testing platform. Please select the project to enter.',
  addProject: 'New Project',
  officialWebSite: 'Sonic Official WebSite',
  document: 'Document',
  versionUpdateRecord: 'Version Record',
};
// 表单相关
const form = {
  save: 'Save',
  unknown: 'Unknown',
  notEmpty: 'Not Empty!',
  differentInput: 'The twice inputs are inconsistent!',
  username: 'User Name',
  role: 'Role',
  testEngineer: 'Test Engineer',
  developmentEngineer: 'Development Engineer',
  oldPasswordNotEmpty: "Old password can't be empty",
  oldPassword: 'Old Password',
  inputOldPassword: 'Please input your old password',
  newPasswordNotEmpty: "New password can't be empty",
  newPassword: 'New Password',
  inputNewPassword: 'Please input your new password',
  inputNewPasswordAgain: 'Please input your new password again',
  confirm: 'Confirm',
  cancel: 'Cancel',
};
// 弹窗相关
const dialog = {
  welcome: 'Welcome back! ',
  permissionDenied: 'Permission denied!',
  suffixError: 'Incorrect file suffix!',
  projectInfo: 'Project Information',
  agentInfo: 'Agent Information',
  myInfo: 'My Information',
  changePassword: 'Change Password',
  copy: {
    success: 'Copy Successful!',
    fail: 'Copy failed!',
  },
  ready: 'Sonic preparation...Please wait...',
  error: 'System Error!',
};
// 通用操作
const common = {
  release: 'It will be automatically unoccupied after timeout',
  releaseTip:
    'Are you sure you want to forcibly remove the occupation status of this device?',
  at: 'After ',
  hour: 'h',
  min: 'm',
  sec: 's',
  null: 'Null',
  delete: 'Delete',
  edit: 'Edit',
  operate: 'Operation',
  copy: 'Copy',
  inuse: 'Used for',
  inidle: 'Idle for',
};
// 路由
const routes = {
  login: 'Login',
  home: 'Home ',
  deviceCenter: 'Device Center',
  remoteControl: 'Remote Control',
  androidTestCase: 'Android Test Case',
  iosTestCase: 'IOS Test Case',
  operateSteps: 'Operating Steps',
  testSuite: 'Test Suite',
  testResult: 'Test Result',
  reportDetails: 'Report Details',
  publicSteps: 'Public Steps',
  controlElement: 'Element',
  globalParameter: 'Global Parameter',
  moduleManage: 'Modules Manage',
  versionIteration: 'Version Manage',
  timedTask: 'Timed Task',
  projectSetting: 'Project Setting',
  projectPage: 'Project Home',
  resource: 'Resource Manage',
  role: 'Roles Manage',
  users: 'Users Manage',
  sysJobs: 'System Jobs',
  remoteSettings: 'Remote Settings',
  scripts: 'Scripts Template Manage',
  projectAlertRobots: 'Notice Robots',
  sysAlertRobots: 'Notice Robots',
};
const setting = {
  title: 'Manage Center',
};
const androidTestCase = {
  addCase: 'Add Test Case',
};
const elements = {
  eleInfo: 'Element information',
  stepInfo: 'Step info',
  warn: 'Warning',
  warnInfo:
    'This element already exists in the following steps. Deleting this element will affect the following steps! Please delete and go to the corresponding step to modify the control or confirm that the corresponding step has been abandoned!',
  stepList: {
    stepId: 'Step Id',
    useCaseId: 'Case Id',
    userCaseName: 'Case name',
    noCase: 'no case',
  },
  sureDelete: 'Confirm deletion',
  addElement: 'Add element',
  controlId: 'element id',
  inputNameSearch: 'Input the name of element to search',
  moduleName: 'Name',
  targetingType: 'Type',
  coordinate: 'Point',
  picture: 'Picture',
  notSpecified: 'Not specified',
  cEleValue: 'Element value',
  inputKeySearch: 'Input the element value to search',
  sureDelInfo: 'Sure to delete this element?',
};
const globalParamsTs = {
  dialogVisible: {
    info: 'Global parameters information',
    specialUse: 'Special Use',
    messageInfo:
      "If you have more than one parameter value, you can use '{'|'}' to separate them, they will be randomly assigned when assigning devices, and only the same parameter value will be taken in a single task. The [random] and [timestamp] parameters are built-in and can be used to construct random data",
    keyName: 'Parameter name',
    keyNameMessage:
      'The parameter name cannot be empty, English is recommended',
    inputName: 'Please input the parameter name',
    valueName: 'Parameter value',
    valueNameMessage:
      "The parameter value cannot be empty, multiple values can be separated by '{'|'}'",
    inputValue:
      "Please input the value of the parameter, multiple values can be separated by '{'|'}'",
  },
  addGlobalParams: 'Add global parameters',
  paramsList: {
    id: 'Parameter id',
    name: 'Name',
    value: 'Value',
  },
  delMessage: 'Sure to delete this global parameter?',
};
const homeTS = {
  projectOverview: 'Project Overview',
  testCaseManagement: 'Test Case Manage',
  testCase: {
    case: 'Test Cases',
    adCase: 'Android Test Cases',
    iosCase: 'iOS Test Cases',
  },
  testSuite: 'Test Suite',
  testDataManagement: 'Test Data Manage',
  testResults: 'Test Result',
  setting: 'CI Settings',
  package: {
    mange: 'Install Package Manage',
    bulk: 'Bulk Package Installation',
  },
  crashReport: 'Crash Reporting',
  projectSetting: {
    setting: 'Project Related Settings',
    mange: 'Module Manage',
    update: 'Version Manage',
  },
};
const jobsTS = {
  dialogVisible: {
    message: 'Timed job message',
    name: 'Name',
    nameIsNull: 'Job name cannot be empty',
    inputName: 'Please input the job name',
    testSuiteIsNull: 'The test suite cannot be empty',
    chooseTestSuite: 'Please choose the test suite',
    cron: 'Cron Expression',
    cronIsNull: 'Cron expression cannot be empty',
    inputCron: 'Please input a Cron expression',
  },
  addCron: 'Add a timed task',
  whatCron: 'What is a Cron expression?',
  cronNoNext: 'N/A',
  cronInfo: {
    one: '* The first bit, indicating seconds, value range: 0-59',
    two: '* The second bit, indicating minutes, value range: 0-59',
    three: '* The third digit, indicating the hour, value range: 0-23',
    four: '* The fourth digit, indicating the date, value range: 1-31',
    five: '* The fifth digit, indicating the month, value range: 1-12',
    six: '* The sixth digit, indicating the day of the week, value range: 1-7',
    seven:
      '* The seventh digit, indicating the year, can be left blank, value range: 1970-2099',
    asterisk:
      '(*) asterisk: can be interpreted as meaning every, every second, every minute',
    questionMark:
      '(?) question mark: can only appear in the date and day of the week, indicating that the value of this position is uncertain',
    bar: '(-) expresses a range, e.g. 10-12 in the hour field, means from 10:00 to 12:00',
    comma:
      '(,) a comma that expresses a list of values, such as 1,2,4\n' +
      'in the week field, then it means Monday, Tuesday, Thursday',
    slash:
      '(/) slash, e.g. x/y , x is the start value, y is the step length, e.g. use \n' +
      ' in the first (second) place 0/15, means start from 0 seconds and every 15 seconds',
    official: 'Official explanation:',
    demoOne: '0 0 3 * * ? Execute at 3:00 per day',
    demoTwo: '0 5 3 * * ? executes at 3:05 every day',
    demoThree: '0 5 3 ? * * executed every day at 3:05',
    demoFour:
      '0 5/10 3 * * ? 3:5, 15, 25, 35, 45, 55\n' + 'Execute in these points',
    demoFive:
      '0 10 3 ? * 1 is executed every week on Sunday at 3:10, note: 1 means Sunday',
    demoSix:
      '0 10 3 ? * 1#3 Executed on the third Sunday of every month, # can only appear in the week position',
    hint: 'Note: The number in the sixth position (day of the week) may not be expressed correctly, you can use the abbreviation to express it, such as: Sun',
  },
  taskId: 'Task id',
  run: 'Run immediately',
  del: 'Delete this timed task?',
};
const loginTS = {
  testPlatform: 'Sonic cloud real machine platform',
  login: {
    message: 'Registered account/LDAP account login',
    register: 'Registered account login',
    LDAPLogin: 'LDAP account login',
  },
  user: {
    inputUserName: 'Please input the account',
    inputPassword: 'Please input the password',
    longin: 'Login',
    register: 'Register',
  },
};
const modulesTS = {
  info: 'Module information',
  name: 'Name',
  isNotNull: 'The module name cannot be empty',
  inputName: 'Please input the module name',
  sure: 'sure',
  add: 'Add module',
  del: 'Delete this module?',
};
const packagesTS = {
  accessGuide: 'Access Guide',
  buildLink: 'Source',
  platform: 'Platform',
  no: 'Not specified',
  packageName: 'Package Name',
  branch: 'branch',
  inputName: 'Input branch name',
  downloadLink: 'Download Link',
  copyUrl: 'Copy url',
  creatTime: 'Created Time',
  updateTime: 'Update Time',
};
const projectIndexTS = {
  code: {
    lastWeek: 'Last week',
    lastMonth: 'Last Month',
    lastThreeMonth: 'Last three months',
    day: ' d ',
    hour: ' h ',
    minute: ' m ',
    second: ' s ',
    runInfo: 'Overviews',
    unit: 'Unit(%)',
    passRate: 'Pass rate for the day',
    stateDis: 'State Distribution',
    other: 'Other',
    pass: 'Pass',
    fail: 'Fail',
  },
  page: {
    to: 'To',
    startTime: 'Start Date',
    endTime: 'End Date',
    caseTop5: 'Ranking of test case runtime(Top 5)',
    caseId: 'Case id',
    caseName: 'Case Name',
    timeLong: 'Duration',
    equipmentTop5: 'Ranking of test case runtime(Top 5)',
    eqId: 'Model',
    serialNumber: 'Serial Number',
  },
};
const publicStepTS = {
  info: 'Public step information',
  add: 'Add public step',
  id: 'public step Id',
  name: 'Name',
  platform: 'Platform',
  android: 'ANDROID',
  list: 'List of Steps',
  stepId: 'Step Id',
  useCase: 'Belonging test case',
  stepInfo: 'Step Details',
  viewSteps: 'View Steps',
  sureDel: 'Delete this public step?',
};
const resultDetailTS = {
  memoryInfo: 'Memory details',
  unit: 'Unit (KB)',
  battery: 'Power details',
  memoryShort: 'Insufficient memory data',
  batteryShort: 'Insufficient power data',
  performance: 'Insufficient performance data',
  caseRun: 'Test case running status distribution',
  noStart: 'Not started',
  runIng: 'Running',
  caseStatus: 'Case status',
  page: {
    reportInfo: 'Report Info',
    resultId: 'Id',
    executeUser: 'Strike',
    runStatus: 'Status',
    testPass: 'Test passed',
    testFail: 'Test failed',
    testAlert: 'Test Alert',
    endTime: 'End Time',
    totalTime: 'Spent time',
    runInfo: 'RunInfo',
    total: 'Time elapsed',
    runLog: 'Running Log',
    performanceInfo: 'Performance Info',
    runRecording: 'Run Recording',
    onRecording: 'No recording yet',
  },
};
const ResultsTS = {
  name: 'Test Suite Name',
  testReport: 'Report Detail',
  lookReport: 'View report',
  interruptTest: 'Interrupt this test?',
  interrupt: 'Interrupt',
  del: 'Delete this test report?',
};
const stepListViewTS = {
  caseInfo: 'Test Case Details',
  platformToBe: 'Platform',
  module: 'Module',
  versionName: 'Version',
  designer: 'Designer',
  last: 'Last Modified',
  testMessage: 'Description',
};
const testSuitesTS = {
  testStart: ' Testing has started...',
  info: 'Test Suite Information',
  add: 'Add test suite',
  id: 'Suite Id',
  searchMessage: 'Input name to search',
  kitPlatform: 'Platform',
  coverType: 'Cover Type',
  testCover: 'TestCase Cover',
  deviceCover: 'Device Cover',
  associated: 'Device',
  device: {
    id: 'device id',
  },
  viewList: 'View List',
  associatedCase: 'Test Cases',
  run: 'Run',
  delMessage:
    'Delete this test suite? The test cases under the suite will be moved out of the suite',
  ui: {
    alertRobotIds: 'Robot',
    defaultAlertRobotIds: 'Follow project testsuite notice settings',
  },
};
const versionsTS = {
  name: 'Name',
  iteration: 'Version information',
  noNull: 'The version name cannot be empty',
  inputName: 'Please input the version name',
  time: 'Time',
  timeNoNull: 'The time cannot be empty',
  selectTime: 'Select date and time',
  addVersions: 'Add version',
  delMessage: 'Delete this version?',
};
const androidRemoteTS = {
  element: {
    windows: {
      single: 'Single Window Mode',
      multi: 'Multi Window Mode',
    },
    visible: {
      hid: 'Hidden Invisible Element',
      show: 'Show Invisible Element',
    },
    unimportant: {
      ignore: 'Ignore Unimportant View',
      show: 'Show Unimportant View',
    },
  },
  driverStatus: {
    success: 'Init UIAutomator2 Server successful!',
    fail: 'Init UIAutomator2 Server failed!',
  },
  repairedSuccess: 'Repaired successfully',
  associationSuccess: 'Associated successfully',
  copySuccess: 'Copy Success',
  copyFail: 'Copy failed',
  noWebSocket: 'WebSocket is not supported',
  connection: 'Connection successful',
  systemException:
    'An exception occurred in the system! Remote control has been disconnected!',
  messageOne: 'Screen rotation detected! Please wait...',
  getPocoSuccess: 'Getting Poco Elements was successful!',
  getPocoFail:
    'Failed to get POCO Elements! Please make sure the corresponding game engine is open and connected to the Poco-SDK',
  pullFile: {
    success: 'Pulling the file was successful',
    fail: 'Failed to pull the file',
  },
  pushFile: {
    success: 'Uploading the file was successful!',
    fail: 'Uploading file failed! Needs to be filled with filenames',
  },
  getEle: {
    success: 'Getting native elements was successful!',
    fail: 'Failed to get the element! Please try it again',
  },
  install: {
    success: 'Installation successful!',
    fail: 'Installation failed!',
  },
  uninstall: {
    success: 'Uninstall successful!',
    fail: 'Uninstall failed!',
  },
  runOver: 'Run finished',
  getSuccess: 'Get Success!',
  getPsSuccess: 'Get snapshot was successful!',
  loadIng: 'Loading the application list, please wait...',
  messageTwo:
    'Automatic global proxy has been canceled, please configure the proxy manually',
  startUninstall: 'Starting to uninstall! Please wait...',
  failErr: 'Wrong file format!',
  addOne: 'Only one file can be added! Please remove the old file first',
  startInstall: 'Starting installation! Please wait...',
  high: 'High',
  middle: 'Middle',
  low: 'Low',
  deviceFail: 'This device is temporarily unavailable!',
  remoteAudio: 'Remote audio is on, please do not repeat!',
  audio: 'Remote audio transfer is connected!',
  audioFail: 'Remote audio transmission has been disconnected!',
  audioSuccess: 'Remote audio synchronization successful!',
  code: {
    elementsSnapshot: 'Element snapshot',
    eleName: 'Element name',
    eleNullName: 'The element name cannot be empty',
    inputName: 'Please input the name of the element',
    saveEle: 'Save as image element',
    preparingImager: 'Prepare image in...',
    systemVersion: 'System version',
    projectionMode: 'Projection mode',
    frameNumber: 'Screen casting frame number',
    manualRepair: 'Repair manually',
    fixBlackScreen: 'Fix black screen',
    fixTouch: 'Fix touch',
    fixScreen: 'Fix horizontal and vertical screen',
    remoteAudioTran: 'Remote audio transmission',
    batterySimulation: 'Battery Simulation',
    simulatePowerOutage: 'Simulate power outage',
    reset: 'reset',
    physicalLookup: 'Physical Lookup',
    BV: 'Brightness/Volume',
    dial: 'Dial',
    photograph: 'Take a picture',
    browser: 'Browser',
    LUS: 'Lock/Unlock Screen',
    remoteControlPanel: 'Panel',
    inputText: 'Input text',
    pleaseText: 'Input the text to send, CHS is supported',
    clear: 'Clear',
    send: 'Send',
    keyboard:
      'Clear input box and real-time input are only available when Sonic Keyboard is enable',
    startKeyboard: 'Enable Sonic Keyboard',
    stopKeyboard: 'Disable Sonic Keyboard',
    remoteADB: 'Remote ADB',
    noAgent: 'The Agent is not enabled!',
    UIAutomator2ServerInit: 'Initialize UIAutomator2Server',
    closeDriver: 'Stop UIAutomator2Server',
    closeDriverMessage: 'Stop UIAutomator2Server successful!',
    automaticInitialization: 'Next time input automatic initialization',
    scanQRCode: 'Scan QR code',
    errTitle:
      'Some models of OPPO and Vivo do not appear in the album after uploading QR code, need to restart to take effect',
    messageThree: 'Drag the QR code image here, or',
    messageFour: 'Only jpg/png files can be uploaded',
    fileTransfer: 'File transfer to each other',
    upFile: 'Upload a file',
    messageFive: 'Drag the file here, or',
    pleaseFilePath: 'Please input the upload destination path (plus file name)',
    filePath: 'Pull the file',
    pullFilePath: 'Please input the pull target path',
    installFile: 'Download file',
    app: 'Application',
    pushInstall: 'Upload to Install',
    apkFile: 'Drag the APK file here, or',
    onlyAPKFile: 'Only upload apk files',
    URLInstall: 'Install via URL',
    linkInstall: 'Install via Jenkins Plugin Upload',
    hintAssociatedProject:
      'This feature requires first associating the project from above',
    hint: 'Please input apk download link or local path',
    refresh: 'Refresh',
    appName: 'APP Name',
    packagesName: 'Package Name',
    version: 'Version',
    subversion: 'Subversion',
    nameSearch: 'Search by application name or package name',
    open: 'Open',
    kill: 'Stop',
    killMsg: 'Stop successful!',
    unInstall: 'Uninstall',
    packet: 'Network',
    startPacket: 'Start network packet capture',
    downloadCertificate: 'Download certificate',
    cancelGlobalProxy: 'Cancel global proxy',
    proxyConnection: 'Proxy connection',
    useTeaching: 'Tutorial',
    connectWifi: 'Connect to Wifi',
    connectWifiText:
      "If you are not connected to Wifi, you need to go to the Wifi list to connect to your Wifi. wifi needs to be interoperable with Agent's network, click refresh after connecting to regain Wifi status",
    installCertificate: 'Install Certificate',
    installCertificateText:
      'The first time to capture the package need to install the certificate, click the download button to download the certificate and install. If the browser can not access, please make sure the Agent has closed the firewall.',
    startCapturing: 'Start capturing',
    startCapturingText:
      'Click to start grabbing packets, you can start to experience it! (default automatic global proxy, if you do not need to click the cancel global proxy button, and then go to the Wifi page to manually configure)',
    screenshotQuick: 'Screenshot',
    screenshot: 'Screenshot',
    clean: 'Clear',
    noScreenshots: 'No screenshots yet',
    savePicture: 'Save picture',
    precautions: 'Precautions',
    precautionsText:
      'This feature is still in Beta testing, temporarily blocking reboot, rm, su and other risky commands',
    inputSend: 'After entering the command, click Send or enter to send',
    enterInput: 'Please input the input filter text',
    UIAutomation: {
      UIAutomationName: 'Automation',
      testInfo: 'Test Case Details',
      clean: 'Unassociate',
      fatherPlayed: 'Belonging items',
    },
    associatedProject: 'Associated Project',
    chooseProject: 'Please choose the associated project',
    addCase: 'Add Test Case',
    hintText: 'Hint',
    hintMessage:
      'This function needs to be associated with a test case from above first',
    nativeControls: 'Native Elements',
    retrieveControlEle: 'Retrieve element',
    activity: 'Current Activity',
    webViewList: 'WebView list',
    classFilter: 'Input class or resource-id to filter',
    addControls: 'Add element',
    controlSnapshot: 'Element Snapshot',
    titleMessage: 'Save elements after associating with a project',
    pocoRecommend: 'poco recommend',
    pocoNull: 'No recommended syntax for poco yet',
    xpath: 'xpath recommend',
    xpathNull: 'No recommended syntax for xpath yet',
    absolutePath: 'absolute path',
    centerXY: 'center Point',
    label: {
      checkable: 'checkable',
      checked: 'checked',
      clickable: 'clickable',
      selected: 'selected',
      displayed: 'displayed',
      enabled: 'enable',
      focusable: 'focusable',
      focused: 'focused',
      longClickable: 'long-clickable',
      scrollable: 'scrollable',
    },
    subTitleText:
      'Please get the element first, this function needs to initialize the Driver',
    getEle: 'Get the element',
    poco: 'Poco Elements',
    getPoco: 'Get Poco element',
    pocoSDK: 'Poco-SDK Access Guide',
    moreFeaturesAdd: 'More features are being added...',
    getPocoSDKMessage:
      'Please get the Poco element first, this feature requires the engine to have access to the Poco-SDK',
    webView: {
      webDebug: 'Web debug',
      err: 'No webView process at the moment',
      getWeb: 'Get webView process',
      againGetWeb: 'Retrieve webView process',
      Untitled: 'No title',
      nowDebug: 'Debug now',
      return: 'Return',
      nowWeb: 'Current page',
      messageInfo:
        'If your browser is not compatible with this feature, please provide feedback to ',
      here: 'here',
    },
  },
};
const indexIOSTS = {
  contentText: 'Switching layout',
  successText: 'Switching success',
};
const settingIndexTS = {
  center: {
    background: 'Admin Center',
    rights: 'Permissions configuration',
    resource: 'Resource manage',
    roleText: 'Role manage',
    userCon: 'User Configuration',
    systemCon: 'System Configuration',
    scheduled: 'System timed tasks',
    remoteSettings: 'Remote Settings',
    sysAlertRobots: 'Notice Robots',
  },
  remote: {
    alertMsg:
      'It is used to configure the maximum occupation time of remote control. After this time, the current occupation will be automatically released and restored to online. (Only affects remote control and the maximum time spent via the REST API, the device running the test is not affected)',
    text: 'Maximum occupation time of remote control: ',
    idle_alertMsg:
      'It is used to configure the maximum idle time of remote control. If the remote control user does not take any action beyond this time limit,the current occupation will be automatically released and restored to online(Only the remote control is affected, and the equipment running the test is not affected)',
    idle_text: 'Maximum idle time of remote control: ',
  },
};
const resourceTS = {
  syncSucceed: 'Sync successfully!',
  syncResource: 'Sync Resources',
  syncResourceInfo: 'Sync resource description',
  syncResourceInfoMessage:
    'Re-full update of all requested resource information in the application, general version updates need to be synchronized',
  pageData: {
    idText: 'Resource id',
    message: 'description',
    path: 'path',
    inputPathName: 'Input path name',
    callMethod: 'Call method',
    requiredText: 'Whether authentication is required',
  },
};
const roleTS = {
  dialogVisible: {
    addOrEdit: 'Add/Edit role',
    roleName: 'Role name',
    roleNoNull: 'Role name cannot be Empty',
    inputParam: 'Please input the parameter name',
    paramNoNull: 'The value of the parameter cannot be Empty',
    roleInfo: 'Please input a role description',
    addRole: 'Add a role',
  },
  pageData: {
    role: 'role',
    nameL: 'Name',
    delMessage: 'Delete this role?',
  },
};
const sysJobsTS = {
  code: {
    cleanFile: 'Clean up system files',
    cleanFileText:
      'Clean up the files such as pictures, videos or temporary apk packages generated during the testing process, and keep the number of days as [the interval between the previous two timed tasks and this timed task] days.',
    cleanResult: 'Clean test report',
    cleanResultText:
      'Clean test report, the number of days to keep is [the interval between the first two timed tasks and this timed task] days.',
    sendDayReport: 'Send daily report',
    sendDayReportText: 'Send the test daily report to the group robot.',
    sendWeekReport: 'Send weekly report',
    sendWeekReportText: 'Send test weekly report to group bot.',
  },
  page: {
    type: 'Type',
    nextTriggerDate: 'Next trigger date',
    editTime: 'Edit system timed task',
  },
};
const usersTS = {
  dialogVisible: {
    editUser: 'Edit user role',
    userName: 'Username',
    chooseUserName: 'Please choose a user role',
  },
  pageData: {
    userId: 'user id',
    userName: 'username',
    inputName: 'Input username',
    roleConfiguration: 'role configuration',
  },
};
const IOSRemote = {
  depth: 'Snapshot Max Depth',
  driverStatus: {
    success: 'Init WebDriverAgent successful!',
    fail: 'Init WebDriverAgent failed!',
  },
  eleScreen: {
    err: 'Get Element Screenshot failed!',
  },
  perfmon: 'Perf Monitor',
  startSimulating: 'Start simulating the positioning...',
  positioningRestored: 'Positioning has been resumed',
  loadingAppList: 'Loading the list of apps, please wait...',
  calibration: 'Calibration complete',
  clipboard: {
    SentSuccessfully: 'Sending clipboard was successful!',
    text: 'Getting clipboard text was successful!',
    operate: 'Clipboard operation',
    inputText: 'Please input the content you want to send to the clipboard',
    send: 'Send to clipboard',
    getText: 'Get clipboard text',
  },
  clarityAndFps: 'Clarity and FPS',
  calibrationCoordinates: 'Calibration Points',
  volume: 'volume',
  siri: {
    command: 'Siri command',
    inputCommand: 'Please input siri command, example: what day is it today?',
  },
  positioning: {
    mock: 'Simulate positioning',
    x: 'Longitude',
    y: 'Latitude',
    start: 'Start to simulating',
    end: 'resume positioning',
  },
  remoteWDA: 'Remote WDA',
  remoteSIB: 'Remote SIB',
  driverNotSuccess: 'driver was not initialized successfully',
  errLog: 'File interchange and crash log',
  waitOpen: 'This feature will be opened soon',
  moveIPA: 'Drag the ipa file here, or',
  onlyIPAFile: 'Only upload ipa files',
  installIPA: 'Install IPA',
  pleaseIPAFilePath: 'Please input ipa download link or local path',
  openWeb: 'Open browser',
  web: {
    openInput: 'Open the browser and input the URL',
  },
  messageStep:
    'Go to phone [Settings] -> [General] -> [VPN & Device Management / Profile & Device Management / Device Management / Profile] -> find mitmproxy certificate to install',
  trustCertificate: 'Trust Certificate',
  certificateStep:
    'Go to the bottom of [Settings] -> [General] -> [About this phone] -> [Certificate Trust Settings] to trust the corresponding certificate',
  startPacketMessage:
    'After clicking start packet capture, Wifi set manual proxy, connect to the corresponding ip and port in the upper right corner to start packet capture',
  filterClassOrName: 'Input class or name to filter',
  predicate: 'Predicate recommend',
  noRecommend: 'No recommended syntax for now',
};
const stepDetail = {
  app: {
    authorize: 'Authorize App ',
    path: 'App Path: ',
    pkg: 'App Package',
    installFromPkglist: 'Install App From Package List ',
    close: 'Close App ',
    branchName: 'Branch Name ',
    emptyCache: 'Empty App Cache ',
    empty: 'Empty App ',
    clear: 'Clear App ',
  },
  attribute: 'Attribute ',
  attributeToVariable: 'Attribute to Variable ',
  activityBlacklist: 'Activity Blacklist ',
  andClick: 'And Click ',
  bufferMemory: 'Buffer Memory ',
  click: {
    action: 'Click ',
    coordinate: 'Click Coordinate ',
    target: 'Click Target ',
    expandOrCollapse: 'Click to Expand/Collapse Script Editor ',
  },
  close: 'Close ',
  control: {
    name: 'Control ',
    attribute: 'Control Attribute ',
    element: 'Control Element ',
    info: 'Control Info ',
    strategy: 'Control Strategy ',
    screenshot: 'Control Screenshot ',
    subControl: 'Sub Control ',
  },
  commonKey: 'Common Keys ',
  communicationPort: 'Communication Port ',
  declearedRights: 'Decleared Rights ',
  des: {
    monkeyOptions: {
      sleepTime: 'sleep between events, in ms',
      tapEvent: 'random tap event',
      longPressEvent: 'random long press event 1 ~ 3s',
      swipeEvent: 'random swipe event',
      systemEvent: 'Home, Return and etc.',
      navEvent:
        'Android: random open/close wifi; iOS: Run current app in background',
      isOpenPackageListener:
        'Detect if the current app is the one to test, otherwise lauch the target app',
      isOpenH5Listener: 'Detect if stay in H5 for a long time(Android Only)',
      isOpenActivityListener:
        'Detect if the current activity is in blacklist (Android Only)',
      isOpenNetworkListener:
        'Detect if in the airplane status or WIFI(Android Only)',
    },
  },
  detailConfigure: 'Detail Configure ',
  delete: 'Delete ',
  detect: 'Detect ',
  dragTo: 'Drag To ',
  dragUp: 'Analog long press',
  dragMove: 'Then drag to',
  dragDown: 'And drop',
  display: 'Display ',
  downwards: 'Downwards ',
  exception: {
    handling: 'Exception Handling',
    ignore: 'Ignore ',
    warning: 'Warning ',
    interrupt: 'Interrupt ',
    msgException: 'The process when the step is in exception',
    msgContinue:
      'Igonre the exception and continue processing (no exception throwout)',
    msgWarning:
      'Mark as warning, get screenshots and stacks, continue the execution (no exception throwout)',
    msgInterrupt:
      'Mark as failure, get screenshots, stacks and video, stop the execution (throwout exception)',
  },
  engine: 'Engine ',
  enterNum: 'Enter Numbers ',
  eventConfigure: 'Event Configure ',
  elementAttribute: 'Element Attribute ',
  empty: 'Empty ',
  enterText: 'Enter Text ',
  eventsNum: 'Events Number ',
  fromControl: 'From Control ',
  gameEngine: 'Game Engine ',
  get: 'Get ',
  getToVariable: 'Get To Variable ',
  handleSwitchInfo: 'Handle Switch Info ',
  handleInfo: 'Handle Info ',
  hide: 'Hide ',
  ignoreOrNot: 'Ignore Or Not ',
  inputValue: 'Input a Value ',
  identifyLanguages: 'Identify Languages ',
  installation: 'Installation ',
  installPath: 'Install Path ',
  imageSimilarity: 'Image Similarity ',
  inputMethod: 'Input Method ',
  inputBox: 'Input Box ',
  iterate: 'Iterate ',
  its: 'its',
  key: 'Key ',
  keyCode: 'Key Code ',
  label: {
    monkeyOptions: {
      sleepTime: 'Sleep Time',
      tapEvent: 'Tap Event',
      longPressEvent: 'Long Press ',
      swipeEvent: 'Swipe Event',
      systemEvent: 'System Event',
      navEvent: 'Navigation Event',
      isOpenPackageListener: 'Package Listener',
      isOpenH5Listener: 'H5 Page Listener (Android Only)',
      isOpenActivityListener: 'Blacklist Activity listener (Android Only)',
      isOpenNetworkListener: 'Network Listener (Android Only)',
    },
    androidOptions: {
      system: {
        self: 'Device Operation',
        rotateDevice: {
          self: 'Screen Interaction',
          lock: 'Lock Screen',
          unlock: 'Unlock Screen',
          screenSub: 'Screen Turn Left',
          screenAdd: 'Screen Turn Right',
          screenAbort: 'Close Auto Rotate',
        },
        keyboard: {
          self: 'Input and Clipboard',
          sendKeyForce: 'Sonic Input',
          closeKeyboard: 'Close Sonic Input',
          setClipperByKeyboard: 'Set Text to Clipboard',
          getClipperByKeyboard: 'Get Clipboard Text',
        },
        interaction: {
          self: 'Special Interaction ',
          keyCode: 'System Key',
          keyCodeSelf: 'System Key(Self-defined)',
          swipeByDefinedDirection: 'Swipe Distance From Screen Center',
        },
        network: {
          self: 'Network Related',
          airPlaneMode: 'Switch Airplane Mode',
          wifiMode: 'Switch Wifi Mode',
          locationMode: 'Switch Location Mode',
        },
      },
      app: {
        self: 'App Operation',
        openApp: 'Open App',
        terminate: 'Terminate App',
        install: 'Install App',
        uninstall: 'Uninstall App',
        appReset: 'Reset App',
        appAutoGrantPermissions: 'Auto Grant Permission',
      },
      element: {
        self: 'Control Element Operation',
        uiEle: {
          self: 'Android Native Control',
          findElementInterval: 'Set Search Control strategy',
          switchWindowMode: 'Switch Window Mode',
          switchVisibleMode: 'Switch Invisible Control Display',
          switchIgnoreMode: 'Switch Ignore non-important View Mode',
          isExistEle: 'Check the Control Element existed',
          isExistEleNum: 'Check the Number of the existed Control Element',
          click: 'Click the Control Element',
          sendKeys: 'Enter Text',
          sendKeysByActions: 'Enter Text(Actions)',
          swipe2: 'Drag Control Element',
          drag2: 'Drag And Drop Control Element',
          motion: 'Motion Event',
          scrollToEle: 'Drag to Control Element',
          longPress: 'Long Press Control Element',
          clear: 'Clear InputBox',
          obtainElementAttr: 'Get Element Attribute',
          getElementAttr: 'Check Control Element Attribute',
          getTextValue: 'Get Text',
          assertText: 'Assert Text',
          logElementAttr: 'Log Element Info Output',
          iteratorAndroidElement: 'Iterator Element List',
        },
        coordinate: {
          self: 'Coordinate Control',
          tap: 'Tap Coordinate',
          longPressPoint: 'Long Press Point',
          swipe: 'Swipe',
          drag: 'Drag And Drop',
          motion: 'Motion Event',
        },
        webView: {
          self: 'WebView Control',
          setDefaultFindWebViewElementInterval: 'Set Search Control strategy',
          toWebView: 'Switch WebView',
          toHandle: 'Switch Handle',
          isExistWebViewEle: 'Check existed control Element',
          isExistWebViewEleNum: 'Check the number of existed Control Element',
          webViewClick: 'Click Element',
          webElementScrollToView: 'Scroll Element to Top View',
          webViewSendKeys: 'Enter Text',
          webViewSendKeysByActions: 'Enter Text(Actions)',
          webViewClear: 'Clear Input',
          getWebViewTextValue: 'Get Text',
          assertWebViewText: 'Assert Text',
          getTitle: 'Check Title',
          getUrl: 'Check URL',
          webViewRefresh: 'Refresh Page',
          webViewBack: 'Go back',
        },
        poco: {
          self: 'POCO Control',
          startPocoDriver: 'Start PocoDriver',
          setDefaultFindPocoElementInterval: 'Set Search Control Strategy',
          setTheRealPositionOfTheWindow: 'Set Offset',
          isExistPocoEle: 'Check if the Poco Element existed',
          isExistPocoEleNum: 'Check the number of existed Poco Control',
          pocoClick: 'Click Poco Element',
          pocoLongPress: 'Long Press Poco Element',
          pocoSwipe: 'Swipe Poco Element',
          freezeSource: 'Freeze Element Tree',
          thawSource: 'Thaw Element Tree',
          closePocoDriver: 'Close PocoDriver',
          obtainPocoElementAttr: 'Get Poco Element Attribute',
          getPocoElementAttr: 'Get Poco Element Attribute',
          getPocoTextValue: 'Get Poco Text',
          assertPocoText: 'Assert Poco Text',
          logPocoElementAttr: 'Log Poco Element Info',
          iteratorPocoElement: 'Iterator Poco Element List',
        },
      },
      check: {
        self: 'Check',
        getActivity: 'Check Activity',
        assert: {
          self: 'Self-defined Assert',
          assertEquals: 'Assert Equal',
          assertNotEquals: 'Assert Not Equal',
          assertTrue: 'Assert Contain',
          assertNotTrue: 'Assert Not Contain',
        },
      },
      img: {
        self: 'Image Operation',
        stepScreen: 'Get Screenshot',
        checkImage: 'Check Image Similarity',
        clickByImg: 'Locate Image and Click',
      },
      spec: {
        self: 'Special Operation',
        publicStep: 'Public Step',
        runScript: 'Self-defined Script',
        monkey: 'Monkey Event',
        pause: 'Force Wait',
      },
      settings: {
        self: 'Runtime Settings',
        stepHold: 'Step Interval setting',
        switchTouchMode: 'Touch Mode Setting',
      },
    },
    iOSOptions: {
      system: {
        self: 'Device Operation',
        rotateDevice: {
          self: 'Screen Interaction',
          lock: 'Lock Screen',
          unlock: 'Unlock Screen',
        },
        specaction: {
          self: 'Special Interaction',
          siriCommand: 'Siri Command',
          sendKeyForce: 'Keyboard Input',
          swipeByDefinedDirection: 'Swipe Distance from Screen Center',
        },
        interaction: {
          self: 'Physical Interaction',
          keyCode: 'System key',
        },
        pasteboard: {
          self: 'Clipboard Managment',
          setPasteboard: 'Set Text',
          getPasteboard: 'Get Text',
        },
      },
      app: {
        self: 'App Operation',
        openApp: 'Open App',
        terminate: 'Terminate App',
        install: 'Install App',
        uninstall: 'Uninstall App',
        runBack: 'Background Run',
      },
      element: {
        self: 'Control Element Operation',
        xcEle: {
          self: 'iOS Native Control',
          findElementInterval: 'Set Search Control strategy',
          isExistEle: 'Check the Control Element existed',
          isExistEleNum: 'Check the Number of the existed Control Element',
          click: 'Click the Control Element',
          sendKeys: 'Enter Text',
          sendKeysByActions: 'Enter Text(Actions)',
          swipe2: 'Drag Control Element',
          scrollToEle: 'Drag to Control Element',
          longPress: 'Long Press Control Element',
          clear: 'Clear InputBox',
          obtainElementAttr: 'Get Element Attribute',
          getElementAttr: 'Check Control Element Attribute',
          getTextValue: 'Get Text',
          assertText: 'Assert Text',
          logElementAttr: 'Log Element Info Output',
          iteratorIOSElement: 'Iterator Element List',
          setSnapshotMaxDepth: 'Set Snapshot Max Depth',
        },
        coordinate: {
          self: 'Coordinate Control',
          tap: 'Tap Coordinate',
          longPressPoint: 'Long Press Point',
          swipe: 'Swipe',
        },
        poco: {
          self: 'POCO Control',
          startPocoDriver: 'Start PocoDriver',
          setDefaultFindPocoElementInterval: 'Set Search Control Strategy',
          setTheRealPositionOfTheWindow: 'Set Offset',
          isExistPocoEle: 'Check if the Poco Element existed',
          isExistPocoEleNum: 'Check the number of existed Poco Control',
          pocoClick: 'Click Poco Element',
          pocoLongPress: 'Long Press Poco Element',
          pocoSwipe: 'Swipe Poco Element',
          freezeSource: 'Freeze Element Tree',
          thawSource: 'Thaw Element Tree',
          closePocoDriver: 'Close PocoDriver',
          obtainPocoElementAttr: 'Get Poco Element Attribute',
          getPocoElementAttr: 'Check Poco Element Attribute',
          getPocoTextValue: 'Get Poco Text',
          assertPocoText: 'Assert Poco Text',
          logPocoElementAttr: 'Log Poco Element Info',
          iteratorPocoElement: 'Iterator Poco Element List',
        },
      },
      check: {
        self: 'Check',
        assert: {
          self: 'Self-defined Assert',
          assertEquals: 'Assert Equal',
          assertNotEquals: 'Assert Not Equal',
          assertTrue: 'Assert Contain',
          assertNotTrue: 'Assert Not Contain',
        },
      },
      img: {
        self: 'Image Operation',
        stepScreen: 'Get Screenshot',
        checkImage: 'Check Image Similarity',
        clickByImg: 'Locate Image and Click',
      },
      spec: {
        self: 'Special Operation',
        publicStep: 'Public Step',
        runScript: 'Self-defined Script',
        monkey: 'Monkey Event',
        pause: 'Force Wait',
      },
      settings: {
        self: 'Runtime Settings',
        stepHold: 'Step Interval setting',
      },
    },
  },
  language: {
    type: 'Language Type',
    english: 'English',
    simplifiedChinese: 'Simplified Chinese',
  },
  logic: {
    process: 'Logical Process',
    condition: 'Logical Condition',
    msgProcess: 'Logic proess related to the test steps',
    msgSubStep: 'Execute substep if no exception in the current steps',
    msgIf:
      'When the last if condition pass then execture the substep, otherwise enter the logic judgment',
    msgFailure: 'Execute the substep when got failure in all steps above',
    msgRepeat: 'Repeat the substep when no exceptions',
  },
  layer: 'Layer(s)',
  localization: 'Localization',
  logOutput: 'Log Output',
  longPress: 'Long Press ',
  max: 'Max',
  maxTries: 'Max Tries ',
  multiWindowMode: 'Multi Window Mode',
  mode: 'Mode',
  motionType: {
    self: 'Motion Type',
    Exec: 'Touch action',
  },
  maxDepth: 'Max Depth',
  maxScroll: 'Max Scroll',
  msg: {
    coordinate: 'Please select coordinarte control elements',
    text: 'Please enter text that expected to be contianed',
    touch: 'Please select touch mode, default to APK touch mode',
    poco: 'Please select POCO control elements',
    startPkgName: 'Please enter the App package name that you want to open',
    stopPkgName: 'Please enter the App package name that you want to terminate',
    installDefine: 'Define download path or local installation',
    installList: 'Install by follow the existed package list',
    installPathInput: 'Please enter the App download path or local apk path',
    branchName:
      'Please enter the branch name, it could be leave as blank(support fuzzy matching)',
    uninstallPkgName: 'Please ente the App package name to be uninstalled',
    clearAppPkgName: 'Please enter the app package name to be cleared',
    authPkgNameInput:
      'Please enter the App ppackage name to be auto authorized',
    webviewPkgName: 'Please enter the Package containing the WebView',
    processName:
      '(Selectable)Please enter the process containing the WebView, default to the package name',
    titleInput: 'Please enter the Handle page title, address or index',
    expected: 'Please enter the expected value or global variable',
    control: 'Please select control attributes, multiple choices are supported',
    notBeEmpty: 'Can not be empty',
    siri: 'Please enter Siri command, for example:what day is it today?',
    publicStep: 'No availble public steps for current project',
    exception: 'Please select the way to handle exceptions',
    input: 'Please enter ',
    select: 'Please select ',
  },
  msgTips: {
    variable: 'TIPS: when temporary variable or global variable is needed, add',
    install:
      'TIPS: Please install Jenkins plugin first, and confirm the package is in installation manager, latest package will be used if multiple packages are matching',
    tab: 'TIPS: Handle is equivalent to the page Tab, try to switch Handle if can not find page after WebView Switching',
    androidPkgName:
      'TIPS: Pass the Android App package name, the step could complete the auto authorize all permission needed in target App',
    focus: 'TIPS: Get textbox focus first to entering',
    sysKey:
      'TIPS: Wakeup the system keyboard first, if temporary variable or global variable is needed, add',
    table:
      'TIPS: In Long list scenario, try to make the target element visiable by continue rolling',
    text: 'TIPS: Save the text got in temporary variable',
    controlAttribute:
      'TIPS: Sve the control attribute got to temperory variable',
    verify:
      'TIPS: to insert global variable or temporary variable, it would be replaced by the variable value during verification',
    order:
      'TIPS: Default order is: SIFT character matching, AKAZE character matching and template matching algorithm',
    language:
      'TIPS: Default language package are simplified Chinese and English, please contact admin if other languages are needed',
    publicStep:
      'TIPS: Start from the step, every step afterwards will follow the setting value',
    reference:
      'TIPS: Edit the script in the step list after save, script user reference, please refer to',
    iteration:
      'TIPS: Used for iterate operation control list, refer【Current iteration Control】in sub step to operate control in the list',
  },
  number: 'Number ',
  native: 'Native ',
  new: 'New',
  none: 'None',
  noException: 'No Exception',
  offsetWidth: 'offsetWidth',
  offsetHeight: 'offsetHeight',
  openOrNot: 'Open Or Not',
  others: 'Others',
  open: 'Open',
  pressSys: 'Press System Key ',
  pressCoordinate: 'long press Coordinate',
  pageScreenshot: 'Page Screenshot',
  path: 'Path',
  pressTime: 'Press Time',
  processName: 'Process Name',
  pocoControl: 'POCO Control',
  port: 'Port',
  randomEventsTest: 'Random Events Test',
  refreshPage: 'Refresh Page',
  reminderDisplay:
    'Keep three commands in display, used for compatability in using older version after upgrade',
  reminderVersion: 'Enhanced text assertion in version above 2.5.0',
  retries: 'Retry times',
  retriesInterval: 'Retry interval',
  rollbackPage: 'Rollback Page',
  scrollControl: 'Scroll Control',
  scrollTo: 'Scroll To',
  runSelfDefinedScript: 'Run your own script',
  scrollOrientation: 'Scroll Orientation',
  scrollNum: 'Scroll Number',
  slideDistance: 'Slide Distance',
  side: 'Side',
  sysKey: 'System Key',
  status: 'Status',
  stepInterval: 'Step Interval',
  stepType: 'Step Type',
  screenCenter: 'From Screen Center to',
  stepTypeInput: 'Please Enter Step Type',
  sendSiriCmd: 'Send Siri Command',
  set: {
    to: 'Set To',
    clipboardText: 'Set Clipboard Text',
    maxControlTraverseDepth: 'Set Max Control Traverse Depth',
    offset: 'Set Offset',
    search: 'Set Search',
    textInfo: 'Set text info',
    TextToClipboard: 'Set Text To Clipboard',
    stepsInterval: 'Set Steps Interval',
    touchMode: 'Set Touch Mode',
  },
  swipe: 'Swipe',
  switch: {
    handler: 'Switch Handler',
    webview: 'Switch Webview',
    mode: 'Switch Mode',
    display: 'Switch Display',
  },
  singleWindowMode: 'Single Window Mode',
  siriCmd: 'Siri Command',
  submit: 'Submit',
  table: 'Table',
  targetAttr: 'Target Attribute',
  textInfo: 'Text Info',
  testPkgName: 'Test Package Name',
  touchMode: 'Touch Mode',
  targetControl: 'Target Control',
  text: 'Text',
  textIdentifyInImage: 'Text Idetify In Image',
  times: 'times',
  topVisible: 'Top Visible',
  turnLeft: 'Turn Screen Left',
  turnRight: 'Turn Screen Right',
  use: 'Use',
  usePublicSteps: 'Use Public Steps',
  unknownScrollSideType: 'UnKnown Rolling Side and type',
  upwards: 'Upwards',
  userDoc: 'User Document',
  variable: 'Variable',
  variableName: 'Variable Name',
  verify: {
    actualValue: 'Actual Value',
    assert: 'Assert',
    assertType: 'Assert Type',
    contain: 'Contain',
    expect: 'Expect',
    expectContain: 'Expect Contain',
    expectedText: 'Expected Text',
    existedOrNot: 'Existed Or Not',
    expectedMatchRatio: 'Expected Match Ratio',
    expectedValue: 'Expect Value',
    existed: 'Existed',
    verify: 'Verify ',
    num: 'Verify Number',
    equalTo: 'Equal',
    greaterThan: 'Greater Than',
    ignore: 'Ignore',
    lessThan: 'Less Than',
    notLessThan: 'Not Less Than',
    notGreaterThan: 'Not Greater Than',
    notEqual: 'Not Equal',
    notContain: 'Not Contain',
    normal: 'Normal',
    notIgnore: 'Not Ignore',
    notExisted: 'Not Existed',
    title: 'Verify Title',
    url: 'Verify Url',
    activity: 'Verify Activity',
    unknownType: 'Unknown Type',
  },
  waitTime: 'Wait Time',
  windowHeight: 'window Height',
  windowWidth: 'window Width',
  wait: 'Wait',
  WebviewName: 'Webview Name',
};
export default {
  message: {
    robot,
    agent,
    common,
    devices,
    layout,
    form,
    dialog,
    routes,
    setting,
    androidTestCase,
    elements,
    globalParamsTs,
    homeTS,
    jobsTS,
    loginTS,
    modulesTS,
    packagesTS,
    projectIndexTS,
    publicStepTS,
    resultDetailTS,
    ResultsTS,
    stepListViewTS,
    testSuitesTS,
    versionsTS,
    androidRemoteTS,
    indexIOSTS,
    settingIndexTS,
    resourceTS,
    roleTS,
    sysJobsTS,
    usersTS,
    IOSRemote,
    script,
    perf,
    steps,
    code,
    token,
    project,
    pubSteps,
    testcase,
    suite,
    element,
    stepDetail,
  },
};
